//
// Created by Administrator on 2020/7/1.
//第四章:类与对象
//对象:现实中对象的模拟,具有属性与行为。
//类:同一类对象的共同属性及行为。
//定义对象时,通过构造函数初始化;删除对象时,通过析构函数释放资源;
//类的组合、结构体、联合体、枚举体

//1-面向对象程序的基本特点
//抽象实例-钟表
//数据抽象:int hour,int minute,int second
//代码抽象:setTime().showTime()

//例1:
/*
class Clock
{
public://外部接口
    void setTime(int newH,int newM,int newS);
    void showTime();

private://内部私有
    int hour,minute,second;
};
*/
//封装:将抽象出来的数据、代码封装在一起,形成类。
//继承:在已有类的基础上进行扩展形成新的类(详见第7章)
//多态:同一个名称，不同的功能实现方式;目的:达到行为标示统一,减少程序中的标示符的个数(详见第8章)


//2-类和对象的定义
//2.1-语法：
/*
class 类名称
{
    public:
        公有成员(外部接口)
    privat:
        私有成员
    protecte:
        保护型成员
};
*/
//2.2-类内初始值
/*
class Clock
{
public://外部接口
    void setTime(int newH,int newM,int newS);
    void showTime();

private://内部私有
    int hour=0,minute=0,second=0;
};
*/
//2.3-对象定义语法
//类名 对象名;
//例:Clock myClock;

//2.3-举例(钟表类)
#include <iostream>
using namespace std;

class Clock
{
public://外部接口
    void setTime(int newH=0,int newM=0,int newS=0);//缺省值
    void showTime();

private://内部私有
    int hour,minute,second;
};
//以下是成员函数的实现
void Clock::setTime(int newH, int newM, int newS)
{
    hour=newH;
    minute=newM;
    second=newS;
}

void Clock::showTime()
{
    cout<<hour<<":"<<minute<<":"<<second;
}
//主函数
int main()
{
    Clock myClock;
    myClock.setTime(12,22,23);
    myClock.showTime();
    return 0;
}